
% Default to the notebook output style

    


% Inherit from the specified cell style.




    
\documentclass{article}

    
    
    \usepackage{graphicx} % Used to insert images
    \usepackage{adjustbox} % Used to constrain images to a maximum size 
    \usepackage{color} % Allow colors to be defined
    \usepackage{enumerate} % Needed for markdown enumerations to work
    \usepackage{geometry} % Used to adjust the document margins
    \usepackage{amsmath} % Equations
    \usepackage{amssymb} % Equations
    \usepackage{eurosym} % defines \euro
    \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support
    \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document
    \usepackage{fancyvrb} % verbatim replacement that allows latex
    \usepackage{grffile} % extends the file name processing of package graphics 
                         % to support a larger range 
    % The hyperref package gives us a pdf with properly built
    % internal navigation ('pdf bookmarks' for the table of contents,
    % internal cross-reference links, web links for URLs, etc.)
    \usepackage{hyperref}
    \usepackage{longtable} % longtable support required by pandoc >1.10
    \usepackage{booktabs}  % table support for pandoc > 1.12.2
    

    
    
    \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
    \definecolor{darkorange}{rgb}{.71,0.21,0.01}
    \definecolor{darkgreen}{rgb}{.12,.54,.11}
    \definecolor{myteal}{rgb}{.26, .44, .56}
    \definecolor{gray}{gray}{0.45}
    \definecolor{lightgray}{gray}{.95}
    \definecolor{mediumgray}{gray}{.8}
    \definecolor{inputbackground}{rgb}{.95, .95, .85}
    \definecolor{outputbackground}{rgb}{.95, .95, .95}
    \definecolor{traceback}{rgb}{1, .95, .95}
    % ansi colors
    \definecolor{red}{rgb}{.6,0,0}
    \definecolor{green}{rgb}{0,.65,0}
    \definecolor{brown}{rgb}{0.6,0.6,0}
    \definecolor{blue}{rgb}{0,.145,.698}
    \definecolor{purple}{rgb}{.698,.145,.698}
    \definecolor{cyan}{rgb}{0,.698,.698}
    \definecolor{lightgray}{gray}{0.5}
    
    % bright ansi colors
    \definecolor{darkgray}{gray}{0.25}
    \definecolor{lightred}{rgb}{1.0,0.39,0.28}
    \definecolor{lightgreen}{rgb}{0.48,0.99,0.0}
    \definecolor{lightblue}{rgb}{0.53,0.81,0.92}
    \definecolor{lightpurple}{rgb}{0.87,0.63,0.87}
    \definecolor{lightcyan}{rgb}{0.5,1.0,0.83}
    
    % commands and environments needed by pandoc snippets
    % extracted from the output of `pandoc -s`
    \providecommand{\tightlist}{%
      \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
    \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
    % Add ',fontsize=\small' for more characters per line
    \newenvironment{Shaded}{}{}
    \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
    \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}}
    \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
    \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
    \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
    \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
    \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
    \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}}
    \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}}
    \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
    \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}}
    \newcommand{\RegionMarkerTok}[1]{{#1}}
    \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
    \newcommand{\NormalTok}[1]{{#1}}
    
    % Define a nice break command that doesn't care if a line doesn't already
    % exist.
    \def\br{\hspace*{\fill} \\* }
    % Math Jax compatability definitions
    \def\gt{>}
    \def\lt{<}
    % Document parameters
    \title{RopePrecisionTest}
    
    
    

    % Pygments definitions
    
\makeatletter
\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax%
    \let\PY@ul=\relax \let\PY@tc=\relax%
    \let\PY@bc=\relax \let\PY@ff=\relax}
\def\PY@tok#1{\csname PY@tok@#1\endcsname}
\def\PY@toks#1+{\ifx\relax#1\empty\else%
    \PY@tok{#1}\expandafter\PY@toks\fi}
\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{%
    \PY@it{\PY@bf{\PY@ff{#1}}}}}}}
\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}}

\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit}
\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}}
\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}
\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}}
\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf}
\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}}
\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}}
\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}}
\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}}
\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}

\def\PYZbs{\char`\\}
\def\PYZus{\char`\_}
\def\PYZob{\char`\{}
\def\PYZcb{\char`\}}
\def\PYZca{\char`\^}
\def\PYZam{\char`\&}
\def\PYZlt{\char`\<}
\def\PYZgt{\char`\>}
\def\PYZsh{\char`\#}
\def\PYZpc{\char`\%}
\def\PYZdl{\char`\$}
\def\PYZhy{\char`\-}
\def\PYZsq{\char`\'}
\def\PYZdq{\char`\"}
\def\PYZti{\char`\~}
% for compatibility with earlier versions
\def\PYZat{@}
\def\PYZlb{[}
\def\PYZrb{]}
\makeatother


    % Exact colors from NB
    \definecolor{incolor}{rgb}{0.0, 0.0, 0.5}
    \definecolor{outcolor}{rgb}{0.545, 0.0, 0.0}



    
    % Prevent overflowing lines due to hard-to-break entities
    \sloppy 
    % Setup hyperref package
    \hypersetup{
      breaklinks=true,  % so long urls are correctly broken across lines
      colorlinks=true,
      urlcolor=blue,
      linkcolor=darkorange,
      citecolor=darkgreen,
      }
    % Slightly bigger margins than the latex defaults
    
    \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in}
    
    

    \begin{document}
    
    
    
    

    
    \begin{Verbatim}[commandchars=\\\{\}]
	\PY{c}{\PYZsh{} Check if all the packages are installed or not}
        \PY{n}{cond} \PY{o}{=} \PY{l+s}{\PYZdq{}}\PY{l+s}{Gadfly}\PY{l+s}{\PYZdq{}} \PY{k}{in} \PY{n}{keys}\PY{p}{(}\PY{n}{Pkg}\PY{o}{.}\PY{n}{installed}\PY{p}{(}\PY{p}{)}\PY{p}{)} \PY{o}{\PYZam{}\PYZam{}}
        \PY{l+s}{\PYZdq{}}\PY{l+s}{Colors}\PY{l+s}{\PYZdq{}} \PY{k}{in} \PY{n}{keys}\PY{p}{(}\PY{n}{Pkg}\PY{o}{.}\PY{n}{installed}\PY{p}{(}\PY{p}{)}\PY{p}{)} \PY{o}{\PYZam{}\PYZam{}}
        \PY{l+s}{\PYZdq{}}\PY{l+s}{ODEInterface}\PY{l+s}{\PYZdq{}} \PY{k}{in} \PY{n}{keys}\PY{p}{(}\PY{n}{Pkg}\PY{o}{.}\PY{n}{installed}\PY{p}{(}\PY{p}{)}\PY{p}{)}\PY{p}{;}
        \PY{p}{@}\PY{n+nb}{assert} \PY{n}{cond} \PY{l+s}{\PYZdq{}}\PY{l+s}{Please check if the following package(s) are installed:}\PY{l+s+se}{\PYZbs{}}
        \PY{l+s}{    Gadfly}\PY{l+s+se}{\PYZbs{}}
        \PY{l+s}{    Colors}\PY{l+s+se}{\PYZbs{}}
        \PY{l+s}{    ODEInterface}\PY{l+s}{\PYZdq{}}
        
        \PY{c}{\PYZsh{} Load all the required packages}
        \PY{k}{using} \PY{n}{Gadfly}
        \PY{k}{using} \PY{n}{Colors}
        \PY{k}{using} \PY{n}{ODEInterface}
        \PY{p}{@}\PY{n}{ODEInterface}\PY{o}{.}\PY{n}{import\PYZus{}huge}
        \PY{n}{loadODESolvers}\PY{p}{(}\PY{p}{)}\PY{p}{;}
\end{Verbatim}



    \begin{Verbatim}[commandchars=\\\{\}]
	\PY{c}{\PYZsh{} Number of subdivisions of the rope}
        \PY{k+kd}{global} \PY{n}{n} \PY{o}{=} \PY{l+m+mi}{40}\PY{p}{;}
        
        \PY{c}{\PYZsh{} Define the system of ODEs}
        \PY{k}{function}\PY{n+nf}{ }\PY{n+nf}{rope}\PY{p}{(}\PY{n}{t}\PY{p}{,}\PY{n}{x}\PY{p}{,}\PY{n}{dx}\PY{p}{)}
            \PY{n}{n2} \PY{o}{=} \PY{n}{n}\PY{o}{*}\PY{n}{n}\PY{p}{;} \PY{c}{\PYZsh{} n\PYZca{}2}
            \PY{n}{n3by4} \PY{o}{=} \PY{n+nb}{convert}\PY{p}{(}\PY{k+kt}{Int64}\PY{p}{,}\PY{l+m+mi}{3}\PY{o}{*}\PY{n}{n}\PY{o}{/}\PY{l+m+mi}{4}\PY{p}{)}\PY{p}{;} \PY{c}{\PYZsh{} 3*n/4}
            
            \PY{c}{\PYZsh{} Force in x\PYZhy{}direction}
            \PY{n}{Fx} \PY{o}{=} \PY{l+m+mf}{0.4}\PY{p}{;}
            \PY{c}{\PYZsh{} Force in y\PYZhy{}direction}
            \PY{n}{Fy} \PY{o}{=} \PY{n}{cosh}\PY{p}{(}\PY{l+m+mi}{4}\PY{o}{*}\PY{n}{t}\PY{o}{\PYZhy{}}\PY{l+m+mf}{2.5}\PY{p}{)}\PY{o}{\PYZca{}}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{4}\PY{p}{)}\PY{p}{;}
            
            \PY{c}{\PYZsh{} Compute required matrices}
            \PY{n}{c} \PY{o}{=} \PY{o}{\PYZhy{}}\PY{n}{cos}\PY{p}{(}\PY{n}{x}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{]}\PY{o}{\PYZhy{}}\PY{n}{x}\PY{p}{[}\PY{l+m+mi}{2}\PY{p}{:}\PY{n}{n}\PY{p}{]}\PY{p}{)}\PY{p}{;}
            \PY{n}{cDiag} \PY{o}{=} \PY{p}{[}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{ones}\PY{p}{(}\PY{n}{n}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{;}\PY{l+m+mi}{3}\PY{p}{]}\PY{p}{;}
            \PY{n}{C} \PY{o}{=} \PY{n}{spdiagm}\PY{p}{(}\PY{p}{(}\PY{n}{c}\PY{p}{,}\PY{n}{cDiag}\PY{p}{,}\PY{n}{c}\PY{p}{)}\PY{p}{,}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{0}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{)}\PY{p}{;}
            
            \PY{n}{d} \PY{o}{=} \PY{o}{\PYZhy{}}\PY{n}{sin}\PY{p}{(}\PY{n}{x}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{]}\PY{o}{\PYZhy{}}\PY{n}{x}\PY{p}{[}\PY{l+m+mi}{2}\PY{p}{:}\PY{n}{n}\PY{p}{]}\PY{p}{)}\PY{p}{;}
            \PY{n}{D} \PY{o}{=} \PY{n}{spdiagm}\PY{p}{(}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{n}{d}\PY{p}{,}\PY{n}{d}\PY{p}{)}\PY{p}{,}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{)}\PY{p}{;}
            
            \PY{c}{\PYZsh{} Compute the inhomogeneous term}
            \PY{n}{v} \PY{o}{=} \PY{o}{\PYZhy{}}\PY{p}{(}\PY{n}{n2}\PY{o}{+}\PY{n}{n}\PY{o}{/}\PY{l+m+mi}{2}\PY{o}{\PYZhy{}}\PY{n}{n}\PY{o}{*}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{;}\PY{p}{]}\PY{p}{)}\PY{o}{.}\PY{o}{*}\PY{n}{sin}\PY{p}{(}\PY{n}{x}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{n2}\PY{o}{*}\PY{n}{sin}\PY{p}{(}\PY{n}{x}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]}\PY{p}{)}\PY{o}{*}\PY{n}{Fx}\PY{p}{;}
            \PY{n}{v}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n3by4}\PY{p}{]} \PY{o}{=} \PY{n}{v}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n3by4}\PY{p}{]} \PY{o}{+} \PY{n}{n2}\PY{o}{*}\PY{n}{cos}\PY{p}{(}\PY{n}{x}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n3by4}\PY{p}{]}\PY{p}{)}\PY{o}{*}\PY{n}{Fy}\PY{p}{;} 
            
            \PY{n}{w} \PY{o}{=} \PY{n}{D}\PY{o}{*}\PY{n}{v}\PY{o}{+}\PY{n}{x}\PY{p}{[}\PY{n}{n}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{n}\PY{p}{]}\PY{o}{.}\PY{o}{\PYZca{}}\PY{l+m+mi}{2}\PY{p}{;}
            \PY{n}{u} \PY{o}{=} \PY{n}{C}\PYZbs{}\PY{n}{w}\PY{p}{;}
            
            \PY{c}{\PYZsh{} Write down the system}
            \PY{n}{dx}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]} \PY{o}{=} \PY{n}{x}\PY{p}{[}\PY{n}{n}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{n}\PY{p}{]}\PY{p}{;}
            \PY{n}{dx}\PY{p}{[}\PY{n}{n}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{n}\PY{p}{]} \PY{o}{=} \PY{n}{C}\PY{o}{*}\PY{n}{v} \PY{o}{+} \PY{n}{D}\PY{o}{*}\PY{n}{u}\PY{p}{;}
            
            \PY{k}{return} \PY{n}{nothing}
        \PY{k}{end}
        
        \PY{c}{\PYZsh{} Initial Conditions}
        \PY{n}{t0} \PY{o}{=} \PY{l+m+mf}{0.0}\PY{p}{;} \PY{n}{T} \PY{o}{=} \PY{l+m+mf}{3.723}\PY{p}{;} \PY{n}{x0}\PY{o}{=}\PY{n}{zeros}\PY{p}{(}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{n}\PY{p}{)}\PY{p}{;}
        
        \PY{c}{\PYZsh{} Compute the \PYZdq{}reference solution\PYZdq{}}
        \PY{n}{opt} \PY{o}{=} \PY{n}{OptionsODE}\PY{p}{(}\PY{n}{OPT\PYZus{}EPS} \PY{o}{=}\PY{o}{\PYZgt{}} \PY{l+m+mf}{1.11e\PYZhy{}16}\PY{p}{,}\PY{n}{OPT\PYZus{}RHS\PYZus{}CALLMODE} \PY{o}{=}\PY{o}{\PYZgt{}} \PY{n}{RHS\PYZus{}CALL\PYZus{}INSITU}\PY{p}{,}
        \PY{n}{OPT\PYZus{}RTOL} \PY{o}{=}\PY{o}{\PYZgt{}} \PY{l+m+mf}{1e\PYZhy{}16}\PY{p}{,}\PY{n}{OPT\PYZus{}ATOL}\PY{o}{=}\PY{o}{\PYZgt{}}\PY{l+m+mf}{1e\PYZhy{}16}\PY{p}{)}\PY{p}{;}
        \PY{p}{(}\PY{n}{t}\PY{p}{,}\PY{n}{x\PYZus{}ref}\PY{p}{,}\PY{n}{retcode}\PY{p}{,}\PY{n}{stats}\PY{p}{)} \PY{o}{=} \PY{n}{dop853}\PY{p}{(}\PY{n}{rope}\PY{p}{,}\PY{n}{t0}\PY{p}{,} \PY{n}{T}\PY{p}{,} \PY{n}{x0}\PY{p}{,} \PY{n}{opt}\PY{p}{)}\PY{p}{;}
        
        \PY{k}{if} \PY{n}{retcode} \PY{o}{!=} \PY{l+m+mi}{1}
            \PY{n}{println}\PY{p}{(}\PY{l+s}{\PYZdq{}}\PY{l+s}{Reference solution failed}\PY{l+s}{\PYZdq{}}\PY{p}{)}
        \PY{k}{else}
            \PY{c}{\PYZsh{} Initialization for the loop}
            \PY{c}{\PYZsh{} f\PYZus{}e = function evaluations}
            \PY{n}{f\PYZus{}e} \PY{o}{=} \PY{n}{zeros}\PY{p}{(}\PY{k+kt}{Int32}\PY{p}{,}\PY{l+m+mi}{89}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{;}
            \PY{c}{\PYZsh{} err = error for last step using infinity norm}
            \PY{n}{err} \PY{o}{=} \PY{n}{zeros}\PY{p}{(}\PY{k+kt}{Float64}\PY{p}{,}\PY{l+m+mi}{89}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{;}
        
            \PY{c}{\PYZsh{} solverNames = names of the solvers used for the plot}
            \PY{n}{solverNames} \PY{o}{=} \PY{p}{[}\PY{l+s}{\PYZdq{}}\PY{l+s}{DOPRI5}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{DOP853}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{ODEX}\PY{l+s}{\PYZdq{}}\PY{p}{]}\PY{p}{;}
        
            \PY{c}{\PYZsh{} Compute all the solutions}
            \PY{k}{for} \PY{n}{i}\PY{o}{=}\PY{l+m+mi}{0}\PY{p}{:}\PY{l+m+mi}{88}
                
                \PY{c}{\PYZsh{} Set up the tolerance}
                \PY{n}{Tol} \PY{o}{=} \PY{l+m+mi}{10}\PY{o}{\PYZca{}}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{3}\PY{o}{\PYZhy{}}\PY{n}{i}\PY{o}{/}\PY{l+m+mi}{8}\PY{p}{)}\PY{p}{;}
                
                \PY{c}{\PYZsh{} Set up solver options}
                \PY{n}{opt} \PY{o}{=} \PY{n}{OptionsODE}\PY{p}{(}\PY{n}{OPT\PYZus{}EPS} \PY{o}{=}\PY{o}{\PYZgt{}} \PY{l+m+mf}{1.11e\PYZhy{}16}\PY{p}{,}\PY{n}{OPT\PYZus{}RHS\PYZus{}CALLMODE} \PY{o}{=}\PY{o}{\PYZgt{}} \PY{n}{RHS\PYZus{}CALL\PYZus{}INSITU}\PY{p}{,}
                \PY{n}{OPT\PYZus{}RTOL} \PY{o}{=}\PY{o}{\PYZgt{}} \PY{n}{Tol}\PY{p}{,}\PY{n}{OPT\PYZus{}ATOL} \PY{o}{=}\PY{o}{\PYZgt{}} \PY{n}{Tol}\PY{p}{)}\PY{p}{;}
        
                \PY{c}{\PYZsh{} Solve using DOPRI5}
                \PY{p}{(}\PY{n}{t}\PY{p}{,}\PY{n}{x}\PY{p}{,}\PY{n}{retcode}\PY{p}{,}\PY{n}{stats}\PY{p}{)} \PY{o}{=} \PY{n}{dopri5}\PY{p}{(}\PY{n}{rope}\PY{p}{,}\PY{n}{t0}\PY{p}{,} \PY{n}{T}\PY{p}{,} \PY{n}{x0}\PY{p}{,} \PY{n}{opt}\PY{p}{)}\PY{p}{;}
                \PY{c}{\PYZsh{} Check if solver was successful}
                \PY{k}{if} \PY{n}{retcode} \PY{o}{!=} \PY{l+m+mi}{1}
                    \PY{n}{printFlag} \PY{o}{=} \PY{n}{false}\PY{p}{;}
                    \PY{k}{break}\PY{p}{;}
                \PY{k}{end}
                \PY{n}{f\PYZus{}e}\PY{p}{[}\PY{n}{i}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{]} \PY{o}{=} \PY{n}{stats}\PY{o}{.}\PY{n}{vals}\PY{p}{[}\PY{l+m+mi}{13}\PY{p}{]}\PY{p}{;}
                \PY{n}{err}\PY{p}{[}\PY{n}{i}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{]} \PY{o}{=} \PY{n}{norm}\PY{p}{(}\PY{n}{x\PYZus{}accurate}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]} \PY{o}{\PYZhy{}} \PY{n}{x}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]}\PY{p}{,}\PY{n+nb}{Inf}\PY{p}{)}\PY{p}{;}
        
                \PY{c}{\PYZsh{} Solve using DOP853}
                \PY{p}{(}\PY{n}{t}\PY{p}{,}\PY{n}{x}\PY{p}{,}\PY{n}{retcode}\PY{p}{,}\PY{n}{stats}\PY{p}{)} \PY{o}{=} \PY{n}{dop853}\PY{p}{(}\PY{n}{rope}\PY{p}{,}\PY{n}{t0}\PY{p}{,} \PY{n}{T}\PY{p}{,} \PY{n}{x0}\PY{p}{,} \PY{n}{opt}\PY{p}{)}\PY{p}{;}
                \PY{c}{\PYZsh{} Check if solver was successful}
                \PY{k}{if} \PY{n}{retcode} \PY{o}{!=} \PY{l+m+mi}{1}
                    \PY{n}{printFlag} \PY{o}{=} \PY{n}{false}\PY{p}{;}
                    \PY{k}{break}\PY{p}{;}
                \PY{k}{end}
                \PY{n}{f\PYZus{}e}\PY{p}{[}\PY{n}{i}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{]} \PY{o}{=} \PY{n}{stats}\PY{o}{.}\PY{n}{vals}\PY{p}{[}\PY{l+m+mi}{13}\PY{p}{]}\PY{p}{;}
                \PY{n}{err}\PY{p}{[}\PY{n}{i}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{]} \PY{o}{=} \PY{n}{norm}\PY{p}{(}\PY{n}{x\PYZus{}accurate}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]} \PY{o}{\PYZhy{}} \PY{n}{x}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]}\PY{p}{,}\PY{n+nb}{Inf}\PY{p}{)}\PY{p}{;}
        
                \PY{c}{\PYZsh{} Solve using ODEX}
                \PY{p}{(}\PY{n}{t}\PY{p}{,}\PY{n}{x}\PY{p}{,}\PY{n}{retcode}\PY{p}{,}\PY{n}{stats}\PY{p}{)} \PY{o}{=} \PY{n}{odex}\PY{p}{(}\PY{n}{rope}\PY{p}{,}\PY{n}{t0}\PY{p}{,} \PY{n}{T}\PY{p}{,} \PY{n}{x0}\PY{p}{,} \PY{n}{opt}\PY{p}{)}\PY{p}{;}
                \PY{c}{\PYZsh{} Check if solver was successful}
                \PY{k}{if} \PY{n}{retcode} \PY{o}{!=} \PY{l+m+mi}{1}
                    \PY{n}{printFlag} \PY{o}{=} \PY{n}{false}\PY{p}{;}
                    \PY{k}{break}\PY{p}{;}
                \PY{k}{end}
                \PY{n}{f\PYZus{}e}\PY{p}{[}\PY{n}{i}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{]} \PY{o}{=} \PY{n}{stats}\PY{o}{.}\PY{n}{vals}\PY{p}{[}\PY{l+m+mi}{13}\PY{p}{]}\PY{p}{;}
                \PY{n}{err}\PY{p}{[}\PY{n}{i}\PY{o}{+}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{]} \PY{o}{=} \PY{n}{norm}\PY{p}{(}\PY{n}{x\PYZus{}accurate}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]} \PY{o}{\PYZhy{}} \PY{n}{x}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{p}{]}\PY{p}{,}\PY{n+nb}{Inf}\PY{p}{)}\PY{p}{;}
            \PY{k}{end}
        
            \PY{c}{\PYZsh{} Save the plot in PNG format}
            \PY{k}{if} \PY{n}{printFlag}
                \PY{n}{savePlotPNG}\PY{p}{(}\PY{l+s}{\PYZdq{}}\PY{l+s}{RopeConvTest}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{n}{f\PYZus{}e}\PY{p}{,}\PY{n}{err}\PY{p}{,}\PY{n}{solverNames}\PY{p}{)}\PY{p}{;}
            \PY{k}{else}
                \PY{n}{println}\PY{p}{(}\PY{l+s}{\PYZdq{}}\PY{l+s}{Cannot generate plot due to solver failure}\PY{l+s}{\PYZdq{}}\PY{p}{)}
            \PY{k}{end}
        \PY{k}{end}
\end{Verbatim}


    % Add a bibliography block to the postdoc
    
    
    
    \end{document}
